/* jshint esversion: 6 */
// ! 注: 处理显示部分
PetUI.SetJS.onload = function () {
    var Site = window.location.origin + ":81";
    // 登陆管理器
    var user = new User(Site, Init);
    window.UserInfo = user;
    window.UserSite = Site;
    // 创建编辑器容器
    let Content = PetUI("#Content").GetContent(false, false);
    // * 创建编辑器
    PetUI.Editor(Content);
    Content.MenuUpload.Click = function () {
        // 验证参数
        if (Content.ValueFile != undefined && Content.ValueFile != "" && Content.Text.value && UserInfo.Key != "") {
            PetUI.HTTP.Post({
                url: Site + "/Write",
                data: {
                    Data: Content.Text.value,
                    Key: UserInfo.Key,
                    File: Content.ValueFile,
                }
            }, function (error, data) {
                if (error == null) {
                    if (data.Error == "") {
                        PetUI.Prompt("成功:" + data.Data);
                    } else {
                        PetUI.PromptErr("写入失败:" + data.Error);
                    }
                } else {
                    PetUI.PromptErr("写入失败:" + error);
                }
            })
        }
    };
    // * 注册容器
    window.TabStrip.SetContainer("编辑器", Content);
    // 初始化 
    function Init(error) {
        if (error != null) {
            PetUI.PromptErr(error);
            return;
        }
        // 加载数据
        let iframe = PetUI("iframe", {
            CSS: "overflow: hidden; width: 100%;height: 100%;top: 0px;display: inline;border: medium none aliceblue;right: 0px;"
        });
        let Content = PetUI("#Content").GetContent(true, true).Add(iframe, {}, true);
        // * 更新数据
        window.UpdateCount = function () {
            PetUI.HTTP.Post({
                data: {
                    Key: user.Key == "" ? user.uuid : user.Key,
                },
                url: Site + "/Count"
            }, function (error, data) {
                if (error != null) {
                    PetUI.PromptErr(error);
                } else {
                    if (data.Error != "") {
                        PetUI.PromptErr(data.Error);
                    } else {
                        Content.Pagination.SetPagination(Math.ceil(data.Data / 10));
                    }
                }
            });
        };
        // * 加载到容器
        window.TabStrip.SetContainer("文章", Content);
        // * 加载事件
        iframe.onload = iframe.onreadystatechange = function () {
            if (!iframe.readyState || iframe.readyState == "complete") {
                // * 处理内容
                PetUI.SetElement.call(iframe.contentDocument.body, iframe.contentDocument.body)
                PetUI.SetElement.call(iframe.contentDocument.head, iframe.contentDocument.head)
                PetUI.DeepClone(iframe.contentDocument.body, PetUI.Additional);
                PetUI.RegisteredEvents(iframe.contentDocument)
                // * 设置样式
                iframe.contentDocument.head.Add(PetUI.Create('style', {
                    innerHTML: "html,body {overflow: hidden;margin-left: 0px;margin-top: 0px;margin-right: 10px;margin-bottom: 0px;}"
                }));
                // * 加载文章模板
                PetUI.GetFile(`/Template/Article.html`, function (Templates) {
                    // * 更新数据
                    window.UpdateCount();
                    // * 解析器
                    let Ay = new PetUI.Analysis();
                    // * 设置模板参数
                    Ay.Templates = Templates;
                    // 模板解析
                    Ay.Analyze();
                    // * 加载事件
                    Ay.Update();
                    // * 设置解析到的CSS 
                    iframe.contentDocument.head.Add(PetUI.Create('style', {
                        innerHTML: Ay.AnalyticalVariables.css
                    }));
                    (function () {
                        // 显示容器
                        let Container = PetUI("div");
                        Container.classList.add("Article");
                        Container.classList.add("Markdown");
                        Container.CSS("height: 100vh;");
                        // 加载数据
                        let View = PetUI("#Content").GetContent(false, false).Add(Container, {}, true);
                        // 加载到容器
                        window.TabStrip.SetContainer("查看", View);
                        // * 创建菜单
                        let menu = PetUI.ContextNavbar();
                        menu.Child()
                        // * 传递值
                        var Value = {
                            File: "",
                            Public: "",
                            div: null,
                        };
                        menu.Submenu("修改文章").Click = function (e) {
                            // * 设置值
                            window.TabStrip.SetState("编辑器", true)
                                .OnValueGet(window.location.origin + ":81/Read/" + Value.File + "?Key=" + UserInfo.uuid).ValueFile = Value.File;
                        }
                        menu.Submenu("修改摘要").Click = function (e) {
                            PetUI.HTTP.Post({
                                url: window.location.origin + ":81/GetModify",
                                data: {
                                    Key: UserInfo.Key,
                                    Address: Value.File,
                                }
                            }, function (error, data) {
                                if (error != null) {
                                    PetUI.PromptErr(error);
                                } else {
                                    if (data.Error != "") {
                                        PetUI.PromptErr(data.Error);
                                    } else {
                                        window.DataModify.iframe.Display(!false);
                                        window.DataModify.title.value = data.Data["标题"];
                                        window.DataModify.digest.value = data.Data["摘要"];
                                        // * 上传处理
                                        window.DataModify.ack.onclick = function () {
                                            // * 判定
                                            let Data = {};
                                            let title = window.DataModify.title.value;
                                            if (title != "" && title != data.Data["标题"]) {
                                                Data["标题"] = title;
                                            }
                                            let digest = window.DataModify.digest.value;
                                            if (digest != "" && digest != data.Data["摘要"]) {
                                                Data["摘要"] = digest;
                                            }
                                            // * 提交
                                            PetUI.HTTP.Post({
                                                url: window.location.origin + ":81/Modify",
                                                data: {
                                                    Key: UserInfo.Key,
                                                    Address: Value.File,
                                                    Data: Data,
                                                }
                                            }, function (error, data) {
                                                if (error != null) {
                                                    PetUI.PromptErr(error);
                                                } else {
                                                    if (data.Error != "") {
                                                        PetUI.PromptErr(data.Error);
                                                    }
                                                }
                                                window.UpdateCount();
                                            })
                                            // * 清除
                                            window.DataModify.title.value = "";
                                            window.DataModify.digest.value = "";
                                            window.DataModify.iframe.Display(false);
                                        }
                                    }
                                }
                            });
                        }
                        menu.Submenu("公开文章").Click = function (e) {
                            this.Text.innerText = Value.Public == "true" ? "隐藏文章" : "公开文章";
                            PetUI.HTTP.Post({
                                url: window.location.origin + ":81/Public",
                                data: {
                                    Key: UserInfo.Key,
                                    Address: Value.File,
                                    Status: Value.Public == "true" ? "false" : "true"
                                }
                            }, function (error, data) {
                                if (error != null) {
                                    PetUI.PromptErr(error);
                                } else {
                                    if (data.Data != "Ok") {
                                        PetUI.PromptErr(data.Error);
                                    } else {
                                        // 重读列表数据
                                        window.UpdateCount();
                                    }
                                }
                            });
                        }
                        menu.AddSplitBar();
                        menu.Submenu("删除").Click = function (e) {
                            PetUI.HTTP.Post({
                                url: window.location.origin + ":81/Delete",
                                data: {
                                    Key: UserInfo.Key,
                                    Address: Value.File,
                                    Status: "true"
                                }
                            }, function (error, data) {
                                if (error != null) {
                                    PetUI.PromptErr(error);
                                } else {
                                    if (data != "Ok") {
                                        PetUI.PromptErr(data);
                                    } else {
                                        // 重读列表数据
                                        window.UpdateCount();
                                    }
                                }
                            });
                        }
                        // * 隐藏菜单
                        iframe.contentDocument.body.UI.Click = (e) => {
                            if (e.target != Value.div) {
                                menu.Display(false);
                            }
                        }
                        // * 设置函数
                        Ay.AnalyticalVariables.js = {
                            Post: function (File) {
                                PetUI.HTTP.Get({
                                    url: window.location.origin + ":81/Read/" + File + "?Key=" + UserInfo.uuid,
                                }, function (error, data) {
                                    if (error != null) {
                                        PetUI.PromptErr(error);
                                    } else {
                                        // 处理显示
                                        Container.innerHTML = "";
                                        Container.innerHTML = PetUI.Editor.Converter.makeHtml(data);
                                    }
                                });
                                window.TabStrip.SetState("查看", true)
                            },
                            Menu: function (e, File, Public) {
                                if (window.UserInfo.Key == "") {
                                    PetUI.PromptErr("登陆后修改");
                                    return;
                                }
                                if (e.button == 0) {
                                    Value.div = e.target;
                                    Value.File = File;
                                    Value.Public = Public;
                                    menu.Display(true);
                                    menu.CSS({
                                        top: e.y + menu.clientHeight + 50 + "px",
                                        left: e.x - menu.clientWidth + 50 + "px",
                                        position: "fixed"
                                    });
                                }
                            }
                        };
                    })()
                    // 设置文章加载
                    Content.Pagination.Click = function (line) {
                        if (Content.Pagination.Number < line) {
                            PetUI.PromptErr("超出下标");
                            return;
                        }
                        // 加载数据
                        PetUI.HTTP.Post({
                            url: Site + "/Line",
                            data: {
                                Key: user.Key == "" ? user.uuid : user.Key,
                                "line": line
                            }
                        }, function (error, data) {
                            if (error != null) {
                                PetUI.PromptErr(error);
                            } else {
                                let variate = {
                                    "文章": data.Data
                                };
                                // 设置数据
                                Ay.Variate = variate;
                                // 更新显示
                                window.scrollTo(0, 0);
                                // 解析模板
                                Ay.Update(iframe.contentDocument.body);
                                iframe.CSS({
                                    height: iframe.contentDocument.body.clientHeight + "px",
                                    width: iframe.contentDocument.body.clientWidth + "px"
                                });
                            }
                        });
                    };
                });
            }
        };
        // * 数据修改模板
        PetUI.GetFile(`/Template/DataModify.html`, function (Templates) {
            // * iframe  隔离数据修改模板
            var iframe = document.createElement("iframe");
            iframe = PetUI.SetElement.call(document.body, iframe, {
                Child: null,
                CSS: `   
                overflow-x: hidden;
                overflow-y: hidden;
                position: absolute;
                width: 100%;
                height: 100%;
                top: 0px;
                display: inline;
                border: aliceblue;
                z-index: 999999!important;
                `,
                Display: false
            });
            // * 解析器
            let Ay = new PetUI.Analysis();
            // * 设置模板参数
            Ay.Templates = Templates;
            // 模板解析
            Ay.Analyze();
            // * 加载事件
            iframe.onload = iframe.onreadystatechange = function () {
                // * 加载完成
                if (!iframe.readyState || iframe.readyState == "complete") {
                    // * 恢复参数
                    PetUI.SetElement.call(iframe.contentDocument.body, iframe.contentDocument.body)
                    PetUI.SetElement.call(iframe.contentDocument.head, iframe.contentDocument.head)
                    // 解析模板
                    Ay.Update(iframe.contentDocument.body);
                    // * 设置解析到的CSS 
                    iframe.contentDocument.head.Add(PetUI.Create('style', {
                        innerHTML: Ay.AnalyticalVariables.css
                    }));
                    // * 初始化
                    let GetID = function (Name) {
                        return iframe.contentDocument.getElementById(Name)
                    }
                    // * 得到节点
                    let title = GetID("title");
                    let digest = GetID("digest");
                    let cancel = GetID("cancel");
                    let ack = GetID("ack");
                    cancel.onclick = function () {
                        iframe.Display(false);
                        title.value = "";
                        digest.value = "";
                    }
                    window.DataModify = {
                        iframe: iframe,
                        title: title,
                        digest: digest,
                        cancel: cancel,
                        ack: ack,
                    }
                };
            };
        });
    }
};